Modern multi-user server-client systems use event driven programs (processes) for time-multiplexing server system resources to run the applications of multiple users. Each process is subdivided into executable segments called threads. Each thread, when ready to execute may constitute (or trigger) an event. When a server process desires to have a client station execute a thread, the server transmits the thread (event) over an established network connection to the remote client station for execution. Events are used for many purposes, including: client paging, fax and e-mail transmissions, and for running user applications.
Reliability in communicating events is important for satisfactory operation of the server-client system. One concern is with the communication network reliability between the server and the client station site. A second concern to the server is whether the action required by the transmitted event has been executed.
An example of a server client relationship in which reliability of event delivery is important is in a service and maintenance context. In a service-maintenance system, a facility may have a service arrangement with a remote service center. When the facility requires service, it requests service from the remote service center. The service center is expected to respond in a timely fashion and provide the service requested. In this case, the requesting facility acts as the event server by sending a service request message (event) to the remote service center (client) using a reliable communication system.
Network communication reliability is governed by the particular protocol used by the communication network. Many well-known standard protocols exist that can provide a variety of reliability levels. For example, TCP/IP (Transmission Control Protocol/Internet Protocol) is the standard Internet reliable protocol for the transfer of data between two computers. TCP/IP uses delivery acknowledgment messages from the network destination node to the source node for providing reliable network node-to-node delivery at the transport network protocol level. Other event notification delivery systems are based on SNMP (Simple Network Management Protocol) or DMI (Desktop Management Interface) protocol, and use UDP (User Datagram Protocol), an unreliable method for delivering an event. UDP uses a "checksum", or bit-parity, for data error checking. However, UDP is unreliable because it does not guaranty delivery of a message. UDP can lose data packets if the client station is not ready to receive a message, if a connection fails, or if the communication network is overloaded.
At times, a server must broadcast an event to more than one client station and needs to know which client stations received the broadcast message in order to avoid server hang-ups. Server hang-ups result when the server does not know if the client station has received all pertinent prior events. (For example, server hang-ups can be caused by a client station having its software crash, having its memory requirement exceed available capacity, or having its processor unit fail.) Normal point-to-point server-client transmission of events using reliable protocols such as TCP/IP do not provide the degree of reliability required for the efficient and effective operation of an event driven system because no indication is given to the server that the message was received and operated on by the client station. Typically, network delivery systems only assure that a message has been successful transmitted from the server network node and that message was received by the network destination node used by the client station.